package com.gc.type;

import java.util.Random;

/**
 * @Author: tgy
 * @Date: 2020-08-06 09:20
 *
 *
 */
public class SerialGC {

    /**
     *
     * jvm 参数:
     *
     *  -Xms10M -Xmx10M -XX:+PrintGCDetails -XX:+UseSerialGC -XX:+PrintCommandLineFlags
     *
     *  注意 当jvm 选择垃圾回收为 serialGC时，tenured 区自动匹配 serialOld 算法
     *
     * Serial 收集器是工作在新生代的，单线程的垃圾收集器，单线程意味着它只会使用一个 CPU 或一个收集线程来完成垃圾回收，
     * 不仅如此，还记得我们上文提到的 STW 了吗，它在进行垃圾收集时，其他用户线程会暂停，直到垃圾收集结束，
     * 也就是说在 GC 期间，此时的应用不可用。
     *
     * 看起来单线程垃圾收集器不太实用，不过我们需要知道的任何技术的使用都不能脱离场景，
     * 在 Client 模式下，它简单有效（与其他收集器的单线程比）, 对于限定单个 CPU 的环境来说，Serial 单线程模式无需与其他线程交互，减少了开销，
     * 专心做 GC 能将其单线程的优势发挥到极致，另外在用户的桌面应用场景，分配给虚拟机的内存一般不会很大，收集几十甚至一两百兆（仅是新生代的内存，桌面应用基本不会再大了），
     * STW 时间可以控制在一百多毫秒内，只要不是频繁发生，这点停顿是可以接受的，所以对于运行在 Client 模式下的虚拟机，Serial 收集器是新生代的默认收集器
     *
     */

    public static void main(String[] args) {

        Random random = new Random();

        StringBuilder stringBuilder = new StringBuilder();

        while (true){

            stringBuilder.append(random.nextInt(77777) + 10000);

        }
    }
}
